/*
    只能使用两种颜色
    相同颜色在一起
    最多有多少种上色方式

    枚举第一种颜色使用k次,则第二种颜色使用n-k次(如果够用)

n m 模板数量 油漆数量
a[m] 每种油漆可以涂多少块木板
*/
#include <cstdio> 
#include <algorithm>
#include <cmath>
using namespace std;
template <typename T>
inline void read(T& x)
{
    int c=getchar(), f=1; x=0;
    while(c<'0'||'9'<c) {if(c=='-') f=-1; c=getchar();}
    while('0'<=c&&c<='9') 
        x=(x<<3)+(x<<1)+c-'0', c=getchar();
    x*=f;
}

inline void write(long long x)
{
    if(x>=10) write(x/10);
    putchar(x%10+'0');
}
#define DEBUG
using ll=long long;
const int N=200010;
ll n, m;
ll a[N];
ll ans;

void init()
{
    ans=0;
    read(n); read(m);
    for(int i=1; i<=m; i++) read(a[i]);
    sort(a+1, a+1+m);
}   


void solve()
{  
    init();
    for(int k=1; k<n; k++)
    {
        ll l=m-(lower_bound(a+1, a+m+1, k)-(a+1)); //>=k的颜色数量
        ll r=m-(lower_bound(a+1, a+m+1, n-k)-(a+1)); //>=n-k的颜色数量
        ans+=1ll*l*r-min(l, r); //min(l, r)避免选择相同颜色数量
    }
    write(ans); puts("");
}

// #undef DEBUG
signed main()
{
    #ifdef DEBUG
        freopen("../in.txt", "r", stdin);
        freopen("../out.txt", "w", stdout);
    #endif

    int T=1; scanf("%d", &T);
    while(T--) 
    {
        solve();
    }
    return 0;
}